package com.cskaoyan.connectionpool;

import com.cskaoyan.utils.JDBCUtils;

import java.sql.Connection;
import java.util.LinkedList;
import java.util.List;

// 自己手动实现的数据库连接池
public class MyConnectionPool {

    // 初始化大小
    static int INIT_SIZE = 10;

    // 增量
    static int ADD_SIZE = 10;

    // 临界值
    static int MIN_SIZE = 5;


    // 数据库连接的集合 从头部存，从尾部取
    static LinkedList<Connection> connectionList;

    // 初始化
    static {

        // 创建对象
        connectionList = new LinkedList<>();

        addCapcity(INIT_SIZE);

    }

    // 获取连接的方法
    public static Connection getConnection(){

        // 动态的扩容
        if (connectionList.size() < MIN_SIZE ) {
            addCapcity(ADD_SIZE);
        }

        Connection connection = connectionList.removeLast();

        return connection;

    }


    // 返回连接
    public static void returnConnection(Connection connection){

        connectionList.addFirst(connection);

    }

    //  扩容的方法
    private static void addCapcity(int size){

        for (int i = 0; i < size; i++) {
            Connection connection = JDBCUtils.getConnection();
            connectionList.addFirst(connection);
        }
    }

}
